package com.tbi.graphcolouring;

import com.tbi.algorithm.configuration.IAlgorithmStopper;
import com.tbi.algorithm.configuration.ICrosser;
import com.tbi.algorithm.configuration.IEvaluator;
import com.tbi.algorithm.configuration.IMutator;
import com.tbi.algorithm.configuration.IPopulationCreator;
import com.tbi.algorithm.configuration.ISelector;
import com.tbi.algorithm.datacollector.IStopperDataCollector;

public class AlgorithmSettings {
	//population creator
	public static int POPULATION_SIZE = 1000;
	
	//selector
	public static float SELECTION_FACTOR = 0.5f;
	public static int TOURNAMENT_GROUP_SIZE = 5;
	
	//mutator
	public static float MUTATION_PROBABILITY = 0.2f;
	
	//crosser
	public static int NUMBER_OF_CROSS_POINTS = 3;
	public static boolean ENABLE_ENTITY_NORMALIZATION = true;
	public static boolean RANDOMIZE_NUMBER_OF_CROSS_POINTS = false;
	public static float CROSSOVER_PROBABILITY = 0.8f;
	
	//stopper
	public static int GENERATIONS_LIMIT = 1000;
	public static int GENERATIONS_WITHOUT_IMPROVEMENT_LIMIT = 100;
	
	//evaluator
	public static int EVALUATION_PUNISHMENT = 10;
	
	//configured implementations
	public static IPopulationCreator populationCreator;
	public static IEvaluator evaluator;
	public static ISelector selector;
	public static IAlgorithmStopper algorithmStopper;
	public static ICrosser crosser;
	public static IMutator mutator;
	
	public static IStopperDataCollector dataCollector;
	
	//graph
	public static BaseGraph graph;
}
